Add one-time flag to permission if group is currently one-time There is currently an issue where apps can get permission-B granted permanently if the user has granted permission-A in same the group as one-time. The app can then further use that permanent grant on permission-B to get the permission-A permanently granted without user interaction. This change marks permission-B as one-time if permission-A in the group is currently granted as one-time; this will cause the permission to be revoked with the other permission. An alternative would be to prompt the user for permission-B, but this isn't consistent since 1. Permission prompts are presented as groups, so it will look like repeated UI 2. Might be considered a behavior change. Test: Manual Bug: 237405974 Change-Id: I421d28a491ff5506d0bbd1118ea915e8a6753903 Merged-In: I421d28a491ff5506d0bbd1118ea915e8a6753903
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt index 23cce17..93f0f74 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
@@ -674,7 +674,7 @@ if (isBackground) { KotlinUtils.grantBackgroundRuntimePermissions(app, group, listOf(perm)) } else { - KotlinUtils.grantForegroundRuntimePermissions(app, group, listOf(perm)) + KotlinUtils.grantForegroundRuntimePermissions(app, group, listOf(perm), group.isOneTime) } KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_USER_SET to false, FLAG_PERMISSION_USER_FIXED to false, filterPermissions = listOf(perm))